//
//  Contact.c
//  通讯录(C)
//
//  Created by Yan Zihao on 2024/12/14.
//
//通讯录的初始化
#include "Seqlist.h"
void ContactInit(Contact* con)
{
    SLInit(con);
}
//通讯录的销毁
void ContactDesTroy(Contact* con)
{
    SLDestory(con);
}
//通讯录添加数据
void ContactAdd(Contact* con)
{
    PeoInfo info;
    
    printf("请输入姓名:\n");
    scanf("%s",info.name);
    
    printf("请输入性别:\n");
    scanf("%s",info.gender);
    
    printf("请输入年龄:\n");
    scanf("%d",&info.age);
    
    printf("请输入电话:\n");
    scanf("%s",info.tel);
    
    printf("请输入地址:\n");
    scanf("%s",info.address);
    
    SLPushBack(con, info);
}

int FindByName(Contact* con,char name[])
{
    for(int i = 0; i < con->size; i++)
    {
        if(strcmp(con->arr[i].name,name) == 0)
        {
            return i;
        }
    }
    return -1;
}

//通讯录删除数据
void ContactDel(Contact* con)
{
    assert(con);
    char name[NAME_MAX];
    printf("输入要删除的联系人的姓名:\n");
    scanf("%s",name);
    int find = FindByName(con, name);
    if(find < 0)
    {
        printf("该联系人不存在\n");
        exit(0);
    }
    SLErase(con, find);
    printf("删除成功\n");
}
//通讯录的修改
void ContactModify(Contact* con)
{
    assert(con);
    char name[NAME_MAX];
    printf("输入要修改的联系人的姓名:\n");
    scanf("%s",name);
    int find = FindByName(con, name);
    if(find < 0)
    {
        printf("该联系人不存在\n");
        exit(0);
    }
        printf("请输入新的姓名：\n");
        scanf("%s", con->arr[find].name);

        printf("请输入新的性别：\n");
        scanf("%s", con->arr[find].gender);

        printf("请输入新的年龄：\n");
        scanf("%d", &con->arr[find].age);

        printf("请输入新的电话：\n");
        scanf("%s", con->arr[find].tel);

        printf("请输入新的住址：\n");
        scanf("%s", con->arr[find].address);

        printf("修改成功！\n");
}
//通讯录查找
void ContactFind(Contact* con)
{
    char name[NAME_MAX];
    printf("请输入要查找的联系人姓名\n");
    scanf("%s", name);

    int find = FindByName(con, name);
    if (find < 0)
    {
        printf("要查找的联系人数据不存在！\n");
        return;
    }
    // 姓名 性别 年龄 电话  地址
    // 11   11   11   11   11
    printf("%s %s %s %s %s\n", "姓名", "性别", "年龄", "电话", "地址");
    printf("%3s %3s %3d %3s %3s\n", //手动调整一下格式
        con->arr[find].name,
        con->arr[find].gender,
        con->arr[find].age,
        con->arr[find].tel,
        con->arr[find].address
    );
}
//展示通讯录数据
void ContactShow(Contact* con)
{
    //表头：姓名  性别 年龄 电话  地址
    printf("%s %s %s %s %s\n", "姓名", "性别", "年龄", "电话", "地址");
    //遍历通讯录，按照格式打印每个联系人数据
    for (int i = 0; i < con->size; i++)
    {
        printf("%3s %3s %3d %3s %3s\n", //手动调整一下格式
            con->arr[i].name,
            con->arr[i].gender,
            con->arr[i].age,
            con->arr[i].tel,
            con->arr[i].address
        );
    }
}
